import { createApp } from 'vue';
import './plugins/assets';
import { setupAppVersionNotification, setupDayjs, setupIconifyOffline, setupLoading, setupNProgress } from './plugins';
import { setupStore } from './store';
import { setupRouter } from './router';
import { setupI18n } from './locales';
import App from './App.vue';

/** 设置应用程序的异步函数 该函数用于初始化应用程序的各种插件和配置 包括加载状态、进度条、图标库、日期处理、Vue实例、状态管理、路由、国际化和应用版本通知 最后将应用挂载到指定的DOM元素上 */
async function setupApp() {
  // 初始化加载状态
  setupLoading();

  // 初始化进度条
  setupNProgress();

  // 初始化图标库
  setupIconifyOffline();

  // 初始化日期处理
  setupDayjs();

  // 创建Vue实例
  const app = createApp(App);

  // 初始化状态管理
  setupStore(app);

  // 初始化路由
  await setupRouter(app);

  // 初始化国际化
  setupI18n(app);

  // 初始化应用版本通知
  setupAppVersionNotification();

  // 将应用挂载到指定的DOM元素上
  app.mount('#app');
}

setupApp();
